// 认知 Math 对象 ( 标准内置对象 )
// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math

// 标准内置对象都是定义在 `the global object` 上的对象
console.log( global.Math , Math );

// Math 不是构造函数
// new Math(); // TypeError: Math is not a constructor

console.log( '- '.repeat(20) );

console.log( Object.getOwnPropertyNames( Math ) );

console.log( '- '.repeat(20) );

// Math 是在全局作用域中定义一个Object对象的实例
console.log( Math.constructor === Object ); // true

// 因此 Math 所继承是 Object 的原型
console.log( Object.getPrototypeOf( Math ) === Object.prototype ); // true

// 调用从 Object原型 继承的 toString() 方法
console.log( Math.toString() );
console.log( Math.hasOwnProperty( 'random' ) ); // true

// Math 用于 Number 类型。它不支持 BigInt 。
// console.log( Math.sqrt( 81n ) ); // TypeError: Cannot convert a BigInt value to a number